Слова.отд
Главная     ◄Глагол     ◄Азбука     ◄Задачи на Глаголе     Примеры приложений ►   Среда разработки ►   Отладка программ ►   Отличия от Оберона ►   Отличия от Паскаля ►   Ассемблер ARM ►   Глагол для ARM ►   ? и Ответы
 
 glagol.png Программируем по-русски
 

Основная задача Глагола — дать человеку возможность воплощать свои мысли на языке, близком к его родному языку.

Издатель Глагола
 

 

(******************************************************************************)
(**)                        ОТДЕЛ Слова;
(******************************************************************************)
(* НАЗНАЧЕНИЕ: основные задачи для ОберГла.отд                                *)
(******************************************************************************)
ИСПОЛЬЗУЕТ 
  Читать ИЗ "...\Отделы\Обмен\",
  Писать ИЗ "...\Отделы\Обмен\",
  Знак   ИЗ "...\Отделы\Иное\",
  Буква  ИЗ "...\Отделы\Иное\",
  Цепь   ИЗ "...\Отделы\Иное\",
  Ряд    ИЗ "...\Отделы\Иное\";

ПОСТ
  ЗапасСлов=100; (* запас ключевых слов    *)
  ДлСлова=32;    (* наибольшая длина слова *)

ВИД
  (* Слово Глагола и соответствующее ему слово языка Оберон *)
  ВСлово=НАБОР(Ряд.Вид)
    г,о:ЦЕПЬ[ДлСлова] 
  КОН;
  ДСлово=ДОСТУП К ВСлово;

ПЕР
  слова:РЯД ЗапасСлов ИЗ Ряд.Доступ; (* ключевые слова *)
  слов:ЦЕЛ;                          (* число ключевых слов *)

(******************************************************************************)
ЗАДАЧА Сравнить(с1-,с2-:Ряд.Вид):ЦЕЛ;
УКАЗ
  ВОЗВРАТ Цепь.Сравнить(с1(ВСлово).о,с2(ВСлово).о)
КОН Сравнить;

(******************************************************************************)
ЗАДАЧА Перевод-:Читать.Поток; п:Писать.Поток);
ПЕР
  з:ЗНАК; (* следующий знак *)
  слово:ВСлово; (* пробное слово *)
  нашли:Ряд.Доступ;

  ЗАДАЧА Пропуск;               (* Пропуск знака без обработки *)
  УКАЗ
    Писать.ЗнакЦепи(п,з);
    з:=Читать.ЗнакЦепи(ч)
  КОН Пропуск;

  ЗАДАЧА ЧитатьСлово(ц+:ЦЕПЬ);  (* Чтение слова в цепочку знаков *)
  ПЕР
    п:ЦЕЛ; (* позиция для чтения в цепочку *)
  УКАЗ
    п:=0;
    ПОВТОРЯТЬ
      ЕСЛИ п < ДлСлова-1 ТО
        ц[п]:; 
        УВЕЛИЧИТЬ(п) 
      КОН;
      з:=Читать.ЗнакЦепи(ч)
    ДО НЕ Знак.ВСлове(з);
    ц[п]:=0X
  КОН ЧитатьСлово;

УКАЗ
  з:=Читать.ЗнакЦепи(ч);
  ПОКА НЕ Читать.Конец(ч) ВЫП
    ПОКА (НЕ Читать.Конец(ч)) И (з <= " ") ВЫП
      Пропуск 
    КОН;
    ЕСЛИ Буква.Известная(з) ИЛИ (з = "_") ТО
      ЧитатьСлово(слово.о);
      нашли:=Ряд.Поиск(слово,слова,слов,Сравнить);
      ЕСЛИ нашли # ПУСТО ТО
        Писать.Цепь(п,нашли(ДСлово).г)
      ИНАЧЕ
        Писать.Цепь(п,слово.о)
      КОН
    АЕСЛИ з = "&" ТО
      Писать.ЗнакЦепи(п,"И");
      з:=Читать.ЗнакЦепи(ч);
      ЕСЛИ Знак.ВСлове(з) ТО Писать.ЗнакЦепи(п," ") КОН
    АЕСЛИ з = "~" ТО
      Писать.Цепь(п,"НЕ");
      з:=Читать.ЗнакЦепи(ч);
      ЕСЛИ Знак.ВСлове(з) ТО Писать.ЗнакЦепи(п," ") КОН
    ИНАЧЕ 
      Пропуск 
    КОН
  КОН;
КОН Перевод;

(******************************************************************************)
ЗАДАЧА ВводСл(г--:ЦЕПЬ);
ПЕР
  слово:ДСлово;
УКАЗ
  СОЗДАТЬ(слово);
  СПИСАТЬ(о,слово.о);
  СПИСАТЬ(г,слово.г);
  Ряд.Вставка(слово,слова,слов,Сравнить)
КОН ВводСл;

(******************************************************************************)
УКАЗ
  слов:=0;
  ВводСл("АЕСЛИ",     "ELSIF");
  ВводСл("БЕГУНОК",   "RIDER");
  ВводСл("В",         "IN");
  ВводСл("ВИД",       "TYPE");
  ВводСл("ВОЗВРАТ",   "RETURN");
  ВводСл("ВЫБРАТЬ",   "CASE");
  ВводСл("ВЫП",       "DO");
  ВводСл("ВЫХОД",     "EXIT");
  ВводСл("ДЕЛИТЬ",    "DIV");
  ВводСл("ДЛЯ",       "WITH");
  ВводСл("ДО",        "UNTIL");
  ВводСл("ДОСТУП",    "POINTER");
  ВводСл("ЕСЛИ",      "IF");
  ВводСл("ЯВЛЯЕТСЯ",  "IS");
  ВводСл("ЗАДАЧА",    "PROCEDURE");
  ВводСл("И",         "&");
  ВводСл("ИЗ",        "OF");
  ВводСл("ИЛИ",       "OR");
  ВводСл("ИНАЧЕ",     "ELSE");
  ВводСл("ИСПОЛЬЗУЕТ","IMPORT");
  ВводСл("К",         "TO");
  ВводСл("КОЛЬЦО",    "LOOP");
  ВводСл("КОН",       "END");
  ВводСл("НАБОР",     "RECORD");
  ВводСл("НЕ",        "~");
  ВводСл("ОСТАТОК",   "MOD");
  ВводСл("ОТ",        "FOR");
  ВводСл("ОТДЕЛ",     "MODULE");
  ВводСл("ПЕР",       "VAR");
  ВводСл("ПО",        "BY");
  ВводСл("ПОВТОРЯТЬ", "REPEAT");
  ВводСл("ПОКА",      "WHILE");
  ВводСл("ПОСТ",      "CONST");
  ВводСл("ПУСТО",     "NIL");
  ВводСл("РЯД",       "ARRAY");
  ВводСл("ТО",        "THEN");
  ВводСл("УКАЗ",      "BEGIN");

  ВводСл("ВЕЩ",       "REAL");
  ВводСл("ВЗНАК",     "CHR");
  ВводСл("ВЦЕЛ",      "ORD");
  ВводСл("ВШИРЦЕЛ",   "ENTIER");
  ВводСл("ВКЛ",       "TRUE");
  ВводСл("РАЗМЕР",    "LEN");
  ВводСл("ЗНАК",      "CHAR");
  ВводСл("КЛЮЧ",      "BOOLEAN");
  ВводСл("МАКС",      "MAX");
  ВводСл("МИН",       "MIN");
  ВводСл("МНОЖ",      "SET");
  ВводСл("МОДУЛЬ",    "ABS");
  ВводСл("НЕ ЧЕТ",    "ODD");
  ВводСл("ОТКЛ",      "FALSE");
  ВводСл("ПРОВЕРИТЬ", "ASSERT");
  ВводСл("СОЗДАТЬ",   "NEW");
  ВводСл("СПИСАТЬ",   "COPY");
  ВводСл("СТОП",      "HALT");
  ВводСл("УВЕЛИЧИТЬ", "INC");
  ВводСл("УЗК",       "SHORT");
  ВводСл("УЗКЦЕЛ",    "SHORTINT");
  ВводСл("УМЕНЬШИТЬ", "DEC");
  ВводСл("ЦЕЛ",       "INTEGER");
  ВводСл("ШИРЦЕЛ",    "LONGINT");
  ВводСл("ШИРВЕЩ",    "LONGREAL");

  ВводСл("ОБХОД",     "SYSTEM");
  ВводСл("Ячейка",    "BYTE");
  ВводСл("Доступ",    "PTR");
  ВводСл("Адрес",     "ADR");
  ВводСл("Значение",  "VAL");
  ВводСл("ИзПамяти",  "GET");
  ВводСл("ВПамять",   "PUT");
  ВводСл("Образ",     "MOVE");
КОН Слова.




Вопросы, замечания и предложения высылайте на atimopheyev@yahoo.com или Издателю Глагола:
 email
 
Главная     ◄Глагол     ◄Азбука     ◄Задачи на Глаголе     Примеры приложений ►   Среда разработки ►   Отладка программ ►   Отличия от Оберона ►   Отличия от Паскаля ►   Ассемблер ARM ►   Глагол для ARM ►   ? и Ответы